SQLでORDER BYを指定しない場合、順序は不定
実際に起きること
select * from usersレベルの単純なSQLは、ディスクに格納されている順に返される where name = 'foo'がつくと、インデックスの読み取りやテーブルスキャンの場合はテーブルの順序に基づいて、別の列の順序で返されるかもしれない さらに複雑なクエリは、プランナが生成するのに最も効率的だと判断した順序で返される
RDBMSシステムには、要求されたものをできるだけ効率的に提供するという使命がある この効率化には、IOの最小化(ディスクへのデータ送信とネットワーク経由のデータ送信の両方)、CPUの最小化、ワーキングセットのサイズを小さくすること(最小限の一時記憶を必要とする方法を使用)など、さまざまな形がある ORDER BY句がない場合、特定の順序を正確に要求していないので、RDBMSは、データを最も速く生成するとRDBMSが期待するアルゴリズムに基づいて行を返す
つまり
効率を重視し、順序は気にしないのであれば、ORDER BY句は省略する
効率ではなく順序を重視するのであれば、ORDER BY句を使用する